package bm.com.project.server.common.controller;

import bm.com.framework.common.config.EnumRoute;
import bm.com.project.server.common.dto.BmSysChangeOrgReqDTO;
import bm.com.project.server.common.dto.BmSysLoginReqDTO;
import bm.com.project.server.common.dto.BmSysSignInReqDTO;
import bm.com.project.server.common.service.LoginService;
import bm.com.framework.common.resp.Result;
import bm.com.framework.common.resp.ResultVO;
import bm.com.framework.common.unit.Tool;
import bm.com.framework.web.core.dto.BmSysUserTokenDTO;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



@RestController
@RequestMapping(EnumRoute.CommonRoute.Base)
@Slf4j
public class LoginController {

    @Resource
    LoginService loginService;


    @PostMapping(EnumRoute.CommonRoute.Login.Login)
    public Result<BmSysUserTokenDTO> login(@RequestBody BmSysLoginReqDTO bmSysLoginReqDTO) {
//        ValidatorUtils.validateEntity(bmSysLoginReqDTO);
        return loginService.login(bmSysLoginReqDTO);
    }

//    @ApiOperation("注册")
    @PostMapping(EnumRoute.CommonRoute.Login.SIGN_IN)
    public Result<BmSysUserTokenDTO> signIn(@RequestBody BmSysSignInReqDTO sysSignInReqDTO) {
//        ValidatorUtils.validateEntity(sysSignInReqDTO);
        return loginService.signIn(sysSignInReqDTO);
    }

//    @ApiOperation("退出")
    @PostMapping(EnumRoute.CommonRoute.Login.LOGIN_OUT)
    public ResultVO loginOut(@RequestBody BmSysUserTokenDTO bmSysUserTokenDTO) {
//        ValidatorUtils.validateEntity(bmSysUserTokenDTO);
        boolean b = loginService.loginOut(bmSysUserTokenDTO);
        if (b) {
            return ResultVO.success("退出成功");
        }
        return ResultVO.success("退出失败");
    }

//    @ApiOperation("获取用户所在的所有组织信息")
    @PostMapping(EnumRoute.CommonRoute.Login.GET_ORG_LIST)
    public ResultVO getOrgLIst(@RequestBody BmSysLoginReqDTO sysLoginReqDTO) {
//        ValidatorUtils.validateEntity(sysLoginReqDTO);
        return loginService.getOrgLIst(sysLoginReqDTO);
    }

//    @ApiOperation("切换组织")
    @PostMapping(EnumRoute.CommonRoute.Login.CHANGE_ORG)
    public Result<BmSysUserTokenDTO> changeOrg(@RequestBody BmSysChangeOrgReqDTO sysChangeOrgReqDTO, HttpServletRequest request) {
//        ValidatorUtils.validateEntity(sysChangeOrgReqDTO);

        String token = request.getHeader("token");
        if (Tool.isStringEmpty(token)) {
            return new Result<BmSysUserTokenDTO>().error("token 不能为空");
        }
        return loginService.changeOrg(sysChangeOrgReqDTO, request.getHeader("token"));
    }

}
